package com.yx.changdao.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yx.changdao.common.entity.SysRole;
import com.yx.changdao.common.exception.AlertException;

import java.util.List;

/**
 * @Title: SysRoleService
 * @Description: 系统角色服务。
 * @Auther: Zhangjiashun
 * @Version: 1.0
 * @create 2019/11/6 11:55
 */
public interface SysRoleService extends IService<SysRole> {
    /**
     * 添加角色
     *
     * @param roleId   角色id
     * @param roleName 角色名
     * @return 添加后的角色
     */
    SysRole addRole(String roleId, String roleName);

    /**
     * 添加角色
     *
     * @param role 角色
     * @return 添加后的角色
     */
    SysRole addRole(SysRole role) throws AlertException;

    /**
     * 添加角色
     *
     * @param roleId   角色id
     * @param roleName 角色名
     * @param createBy 创建者
     * @return 添加后的角色
     */
    SysRole addRole(String roleId, String roleName, String createBy);

    /**
     * 添加角色
     * @param roleId
     * @param roleName
     * @param createBy
     * @param createByName
     * @return
     */
    SysRole addRole(String roleId, String roleName, String createBy, String createByName);
    /**
     * 根据角色id获取角色
     *
     * @param roleId 角色id
     * @return 角色
     */
    SysRole getRole(String roleId);

    /**
     * 根据角色名获取角色
     */
    SysRole getRoleByName(String roleName);

    /**
     * 获取所有角色
     *
     * @return 角色列表
     */
    List<SysRole> getAllRoles();

    /**
     * 删除角色
     *
     * @param roleId 角色id
     * @return 是否删除成功
     */
    Boolean delRole(String roleId);

    /**
     * 删除角色
     *
     * @param role 角色
     * @return 是否删除成功
     */
    Boolean delRole(SysRole role);

    /**
     * 更新角色
     *
     * @param role 角色
     * @return 是否更新成功
     * @throws AlertException 异常
     */
    Boolean updateRole(SysRole role) throws AlertException;
}
